{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19",
    "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5",
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# 导入最基本的数据处理工具\n",
    "# import numpy as np # 导入NumPy数学计算工具包\n",
    "import pandas as pd # 导入Pandas数据处理工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>点赞数</th>\n",
       "      <th>转发数</th>\n",
       "      <th>热度指数</th>\n",
       "      <th>文章评级</th>\n",
       "      <th>浏览量</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2646</td>\n",
       "      <td>1347.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>260004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>816</td>\n",
       "      <td>816.0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>100004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1224</td>\n",
       "      <td>612.0</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>164502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1261</td>\n",
       "      <td>1261.0</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>163001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1720</td>\n",
       "      <td>1720.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>260401</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1541</td>\n",
       "      <td>1541.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>220002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>827</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>107503</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>866</td>\n",
       "      <td>686.0</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>110504</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1314</td>\n",
       "      <td>1300.0</td>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "      <td>229461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1431</td>\n",
       "      <td>1099.0</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>165004</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    点赞数     转发数  热度指数  文章评级     浏览量\n",
       "0  2646  1347.0     7     5  260004\n",
       "1   816   816.0     4     6  100004\n",
       "2  1224   612.0     6     5  164502\n",
       "3  1261  1261.0     6     6  163001\n",
       "4  1720  1720.0     7     5  260401\n",
       "5  1541  1541.0     7     5  220002\n",
       "6   827     NaN     5     7  107503\n",
       "7   866   686.0     5     9  110504\n",
       "8  1314  1300.0     8     5  229461\n",
       "9  1431  1099.0     6     5  165004"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_ads = pd.read_csv('易速鲜花微信软文.csv') # 读入数据\n",
    "# df_ads.astype(int)\n",
    "df_ads.head(10) # 显示前几行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "点赞数      0\n",
       "转发数     37\n",
       "热度指数     0\n",
       "文章评级     0\n",
       "浏览量      0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_ads.isna().sum() # NaN出现的次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# df_ads['转发数'].fillna(df_ads['转发数'].mean(), inplace=True) # 用均值补值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_ads = df_ads.dropna() # 删除NaN值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入数据可视化所需要的库\n",
    "import matplotlib.pyplot as plt #Matplotlib – Python画图工具库\n",
    "import seaborn as sns #Seaborn – 统计学数据可视化工具库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(df_ads['点赞数'],df_ads['浏览量'],'r.', label='Training data') # 用matplotlib.pyplot的plot方法显示散点图\n",
    "plt.xlabel('点赞数') # x轴Label\n",
    "plt.ylabel('浏览量') # y轴Label\n",
    "plt.legend() # 显示图例\n",
    "plt.show() # 显示绘图结果！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = pd.concat([df_ads['浏览量'], df_ads['热度指数']], axis=1) # 浏览量和热度指数\n",
    "fig = sns.boxplot(x='热度指数', y=\"浏览量\", data=data) # 用seaborn的箱线图画图\n",
    "fig.axis(ymin=0, ymax=800000); #设定y轴坐标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df_ads.drop(['浏览量'],axis=1) # 特征集，Drop掉便签相关字段\n",
    "y = df_ads.浏览量 # 标签集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>点赞数</th>\n",
       "      <th>转发数</th>\n",
       "      <th>热度指数</th>\n",
       "      <th>文章评级</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2646</td>\n",
       "      <td>1347.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>816</td>\n",
       "      <td>816.0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1224</td>\n",
       "      <td>612.0</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1261</td>\n",
       "      <td>1261.0</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1720</td>\n",
       "      <td>1720.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    点赞数     转发数  热度指数  文章评级\n",
       "0  2646  1347.0     7     5\n",
       "1   816   816.0     4     6\n",
       "2  1224   612.0     6     5\n",
       "3  1261  1261.0     6     6\n",
       "4  1720  1720.0     7     5"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.head() # 显示前几行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    260004\n",
       "1    100004\n",
       "2    164502\n",
       "3    163001\n",
       "4    260401\n",
       "Name: 浏览量, dtype: int64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.head() # 显示前几行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将数据集进行80%（训练集）和20%（验证集）的分割\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, \n",
    "                                   test_size=0.2, random_state=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression # 导入线性回归算法模型\n",
    "model = LinearRegression() # 使用线性回归算法创建模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(X_train, y_train) # 用训练集数据，训练机器，拟合函数，确定参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred = model.predict(X_test) #预测测试集的Y值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>点赞数</th>\n",
       "      <th>转发数</th>\n",
       "      <th>热度指数</th>\n",
       "      <th>文章评级</th>\n",
       "      <th>浏览量真值</th>\n",
       "      <th>浏览量预测值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>150</th>\n",
       "      <td>1768</td>\n",
       "      <td>884.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>224904</td>\n",
       "      <td>204326.495272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>988</td>\n",
       "      <td>988.0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>113001</td>\n",
       "      <td>117182.827329</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1049</th>\n",
       "      <td>2062</td>\n",
       "      <td>1157.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>277002</td>\n",
       "      <td>236266.050505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>393</th>\n",
       "      <td>1392</td>\n",
       "      <td>1392.0</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>121502</td>\n",
       "      <td>166316.290479</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1255</th>\n",
       "      <td>1537</td>\n",
       "      <td>1319.0</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>174002</td>\n",
       "      <td>206254.835807</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>497</th>\n",
       "      <td>1913</td>\n",
       "      <td>896.0</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>177004</td>\n",
       "      <td>189916.572692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>644</th>\n",
       "      <td>1500</td>\n",
       "      <td>1356.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>246582</td>\n",
       "      <td>218800.099624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>1258</td>\n",
       "      <td>1258.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>172504</td>\n",
       "      <td>200171.838771</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>943</th>\n",
       "      <td>438</td>\n",
       "      <td>290.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>60004</td>\n",
       "      <td>-32628.683687</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1170</th>\n",
       "      <td>1350</td>\n",
       "      <td>1248.0</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>168505</td>\n",
       "      <td>178150.881315</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>285 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       点赞数     转发数  热度指数  文章评级   浏览量真值         浏览量预测值\n",
       "150   1768   884.0     7     5  224904  204326.495272\n",
       "36     988   988.0     5     5  113001  117182.827329\n",
       "1049  2062  1157.0     7     5  277002  236266.050505\n",
       "393   1392  1392.0     5     6  121502  166316.290479\n",
       "1255  1537  1319.0     6     9  174002  206254.835807\n",
       "...    ...     ...   ...   ...     ...            ...\n",
       "497   1913   896.0     6     6  177004  189916.572692\n",
       "644   1500  1356.0     7     5  246582  218800.099624\n",
       "38    1258  1258.0     7     5  172504  200171.838771\n",
       "943    438   290.0     2     5   60004  -32628.683687\n",
       "1170  1350  1248.0     6     5  168505  178150.881315\n",
       "\n",
       "[285 rows x 6 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_ads_pred = X_test.copy() #测试集特征数据\n",
    "df_ads_pred['浏览量真值'] = y_test #测试集标签真值\n",
    "df_ads_pred['浏览量预测值'] = y_pred #测试集标签预测值\n",
    "df_ads_pred #显示数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "线性回归预测集评分： 0.4189365095307419\n",
      "线性回归训练集评分： 0.7826168129744089\n"
     ]
    }
   ],
   "source": [
    "print(\"线性回归预测集评分：\", model.score(X_test, y_test)) #评估模型\n",
    "print(\"线性回归训练集评分：\", model.score(X_train, y_train)) #训练集评分"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
